function formatDate(date) {

  var fmt = 'yyyy-MM-dd hh:mm:ss';
  var date = new Date(date);
  if(/(y+)/.test(fmt)){
    fmt = fmt.replace(RegExp.$1,(date.getFullYear()+'').substr(4-RegExp.$1.length));
  }
  let o = {
    'M+':date.getMonth() + 1,
    'd+':date.getDate(),
    'h+':date.getHours(),
    'm+':date.getMinutes(),
    's+':date.getSeconds()
  };
  // 遍历这个对象
  for(let k in o){
    if(new RegExp(`(${k})`).test(fmt)){
      // console.log(`${k}`)
     
      let str = o[k] + '';
      fmt = fmt.replace(RegExp.$1,(RegExp.$1.length===1)?str:('00'+str).substr(str.length));
    }
  }
  return fmt;
};
/**  
 * 判断身份证号码为18位时最后的验证位是否正确  
 * @param a_idCard 身份证号码数组  
 * @return  
 */  
function isTrueValidateCodeBy18IdCard(a_idCard) {
      var a = a_idCard; 
      var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];    // 加权因子   
      var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];            // 身份证验证位值.10代表X  
      var sum = parseInt(0);  
      a = a.replace("X", "10");
      var valChar = a.substr(17);                           // 声明加权求和变量   
      for ( var i = 0; i < 17; i++) {   
          sum += parseInt(Wi[i]) * parseInt(a.substr(i, 1));            // 加权求和   
      }   
      var valCodePosition = parseInt(sum) % 11;                // 得到验证码所位置   
      if (parseInt(valChar) == parseInt(ValideCode[valCodePosition])) {   
          return true;   
      } else {   
          return false;   
      }   
  };
  /**  
  * 验证18位数身份证号码中的生日是否是有效生日  
  * @param idCard 18位书身份证字符串  
  * @return  
  */  
function isValidityBrithBy18IdCard(idCard18){   
  var year =  idCard18.substring(6,10);   
  var month = idCard18.substring(10,12);   
  var day = idCard18.substring(12,14);   
  var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));   
  // 这里用getFullYear()获取年份，避免千年虫问题   
  if(temp_date.getFullYear()!=parseFloat(year)   
        ||temp_date.getMonth()!=parseFloat(month)-1   
        ||temp_date.getDate()!=parseFloat(day)){   
          return false;   
  }else{   
      return true;   
  }   
};
/**  
   * 验证15位数身份证号码中的生日是否是有效生日  
   * @param idCard15 15位书身份证字符串  
   * @return  
   */  
  function isValidityBrithBy15IdCard(idCard15){   
    var year =  idCard15.substring(6,8);   
    var month = idCard15.substring(8,10);   
    var day = idCard15.substring(10,12);   
    var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));   
    // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法   
    if(temp_date.getYear()!=parseFloat(year)   
            ||temp_date.getMonth()!=parseFloat(month)-1   
            ||temp_date.getDate()!=parseFloat(day)){   
              return false;   
      }else{   
          return true;   
      }   
};


function isCardNo(card)  
{
   // 身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X  
   var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;  
   if(reg.test(card) === false)  
   {
       
       return  false;  
   }
   return true;
};
module.exports = {
  formatDate: formatDate,
  isTrueValidateCodeBy18IdCard:isTrueValidateCodeBy18IdCard,
  isValidityBrithBy18IdCard:isValidityBrithBy18IdCard,
  isValidityBrithBy15IdCard:isValidityBrithBy15IdCard,
  isCardNo:isCardNo

}